package net.zjitc.controller;

import net.zjitc.common.ResponseResult;
import net.zjitc.entity.ImgUpload;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

@CrossOrigin
@RestController
public class ImgUploadController {

    /**
     * 初始化判断D盘下的upload文件夹是否存在,不存在则创建
     * @PostConstruct注解的方法在项目启动的时候执行这个方法，也可以理解为在spring容器启动的时候执行，
     */
    @PostConstruct//
    public void init(){
        File file=new File("D:/upload");
        if (file.exists()){
            if (file.isDirectory()){//检查是否是文件夹
                System.out.println("文件夹已存在");
            }else {
                boolean mkdir = file.mkdir();
                // mkdir()函数用于创建由抽象路径名表示的新目录
                if (mkdir){
                    //如果创建目录，则该函数返回true，否则返回false。
                    System.out.println("在D盘下创建一个新的uplod文件");
                }
            }
        }else {
            boolean mkdir = file.mkdir();
            if (mkdir){
                //如果创建目录，则该函数返回true，否则返回false。
                System.out.println("在D盘下创建一个新的uplod文件");
            }
        }
    }

    /**
     * 图片上传就保存
     * @param file
     * @return
     * @throws IOException
     */
    @PostMapping("/upload")
    public ResponseResult ImgUpload(MultipartFile file) throws IOException {
        ResponseResult result=new ResponseResult();

        //重命名文件名称
        //file.getOriginalFilename()是得到上传时的文件名
        String filename = file.getOriginalFilename();
        filename=System.currentTimeMillis()+"_"+filename;

        //获取当前项目的绝对路径并且拼接图片保存的绝对路径,保存上传的文件D盘下的upload目录中
        String path="D:/upload/"+filename;
        file.transferTo(new File(path));

        //设置上传图片保存的相对路径和网络访问路径,并且返回
        ImgUpload imgUpload=new ImgUpload();
        imgUpload.setTmp_path("upload/"+filename);
        //网页可以通过此url直接访问到上传的图片
        imgUpload.setUrl("http://localhost:8888/api/private/v1/upload/"+filename);

        result.setSuccess("上传成功",imgUpload);
        return result;
    }
}
